iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
0
自我挑戰組

滿滿的紅寶石不拿嗎?-- 去吧!我把世界上的一切都放在那裡了! 系列 第 11

類別 <> 前往海底一萬米!想要一睹 Ruby 世界裡的 All Blue 就進來吧!- 滿滿的紅寶石不拿嗎?

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20200917/20128363omyHRrqOXP.jpg

[Day10] 人魚、魚人和人類雖然是不同的類別,但是也可以好好地生活在一起!


什麼是類別?

今天要介紹的是 Ruby 裡的類別(Class)
這是一個 Ruby 語言裡相當重要的關鍵字

簡單來說,類別是拿來產生實體(Instance)的東西,實體就是昨天有介紹過的物件。

但這樣解釋其實不夠完整,想要弄懂 Ruby 裡的類別其實沒有這麼容易,類別的概念裡隱含著 Ruby 這門程式語言的設計哲學,以及有些我尚未掌握的概念,這是無法一蹴而就的,因此,我預計把它拆成幾個部分,用不同天的篇幅介紹:

  • 類別基礎介紹
  • 繼承
  • 類別方法
  • 開放類別
  • Singleton Class 與繼承鍊(可能)

好的,就先讓我們從頭開始來認識類別吧!


經典的烤盤範例

要了解 Ruby 的類別,龍哥是用烤盤和雞蛋糕來巧妙比喻類別與實體的關係。

不過,我今天想吃章魚燒:
https://ithelp.ithome.com.tw/upload/images/20200920/20128363fkT7ZgjfKa.jpg
看著看著好像餓了...

在 Ruby 裡,那個負責做出章魚燒的烤盤就是類別,一個個熱騰騰的章魚燒則是實體
因此只要烤盤沒壞掉,而且原料足夠的話,每次做出來的應該都會是同樣好吃的章魚燒!(原則上啦,不然會被客訴啊!)

所以在定義一個類別時,可以設定產生新實體時要做什麼,或是在類別裡定義一些方法等等。
然後,一個個的實體就可以透過類別生出來囉!

接著,來看一下類別的定義吧!


類別的名稱必須要是常數!

類別的名稱必須要是常數,也就是第一個字元一定要大寫。
不過,並不是看到開頭大寫的就一定是類別,像是模組,也得用大寫常數命名,過幾天會介紹它,這裡先賣個關子。

實際來看 code 吧!
先定義一個 Cat 的類別:

class Cat
  def walk(place)
    puts "我想去 #{place}, 喵~"
  end
end

然後用 Cat 類別來產生新的實體 mirunini

miru = Cat.new
nini = Cat.new

(題外話,miru 和 nini 是我朋友家的兩隻貓,超級可愛!)

可以看到 mirunini 都能呼叫 walk 方法:
這是因為他們都屬於 Cat 這個類別

miru.walk ("公園")
miru.walk("遊樂園")

# 印出:
我想去 公園 喵~
我想去 遊樂園 喵~

Ruby 類別的簡單介紹就先到這邊啦!

祝大家都能找到自己心目中的 All Blue!
https://ithelp.ithome.com.tw/upload/images/20200919/20128363bndnA7GRB5.jpg


上一篇
物件 <> 最初與最盡責的夥伴,黃金梅利號:我想再航行一次! - 滿滿的紅寶石不拿嗎?
下一篇
繼承 <> D 的意志!鐵拳卡普、革命家龍、草帽魯夫,這一家真的沒開外掛嗎? - 滿滿的紅寶石不拿嗎?
系列文
滿滿的紅寶石不拿嗎?-- 去吧!我把世界上的一切都放在那裡了! 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言